Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


lang/README.ja.md v4.5.0-rc.4 (17844e91) Text, 17.65 KB

Reticulum MeshChatX


Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張したフォークです。

本プロジェクトはオリジナルの Reticulum MeshChat とは独立しており、提携関係にありません。

• ウェブサイト: meshchatx.com
• ソースコード: git.quad4.io/RNS-Things/MeshChatX
• 公式ミラー: github.com/Quad4/MeshChatX — 現時点では Windows / macOS ビルドにも使用。
• 変更履歴: CHANGELOG.md
• TODO: Boards

Reticulum MeshChat からの主な変更

• LXST を使用
• Peewee ORM を生 SQL に置き換え
• Axios をネイティブ T383838fetch に置き換え
• Electron 41.x(同梱 Node 24 ランタイム)
• Web サーバーと同梱フロントエンドを含む T383838.whl によりデプロイの選択肢を拡張
• i18n
• 依存関係管理に PNPM と Poetry

│ [!WARNING] MeshChatX は旧バージョンの Reticulum MeshChat
│ とのデータ互換性を保証しません。マイグレーションやテスト前にデータをバックアップしてください。

│ [!WARNING] レガシーシステムはまだ完全にはサポートされていません。現在の最低要件: Python
│ T383838>=3.11、Node T383838>=24(Electron 41 は Node 24 系;T383838package.json の T383838engines と CI は同じ基準)。

必要条件

• Python T383838>=3.11(T383838pyproject.toml より)
• Node.js T383838>=24(T383838package.json の T383838engines
• pnpm T38383810.33.0(T383838package.json の T383838packageManager
• Poetry(T383838Taskfile.yml および CI ワークフローで使用)

T282828
task install
task lint:all
task test:all
task build:all

インストール方法

環境とパッケージ形式に合わせて選んでください。

┌──────────────────────────┬────────────────────┬───────────────────────────────────────┬──────────┐
│ 方法 │ フロントエンド含む │ アーキテクチャ │ 最適な… │
├──────────────────────────┼────────────────────┼───────────────────────────────────────┼──────────┤
│ Docker イメージ │ はい │ T383838linux/amd64, T383838linux/arm64 │ Linux … │
│ Python wheel (T383838.whl) │ はい │ Python がサポートする全アーキテクチャ │ Node ビ… │
│ Linux AppImage │ はい │ T383838x64, T383838arm64 │ ポータ… │
│ Debian パッケージ (T383838.deb) │ はい │ T383838x64, T383838arm64 │ Debian/… │
│ RPM パッケージ (T383838.rpm) │ はい │ CI 依存 │ Fedora/… │
│ ソースから │ ローカルビルド │ ホストアーキテクチャ │ 開発・… │
└──────────────────────────┴────────────────────┴───────────────────────────────────────┴──────────┘

備考:

• リリースワークフローは Linux T383838x64 および T383838arm64 の AppImage + DEB を明示的にビルドします。
• RPM も試行され、成功時にアップロードされます。

クイックスタート: Docker

T282828
docker compose up -d

デフォルトの compose ファイル:

• ホスト T383838127.0.0.1:8000 -> コンテナポート T3838388000
• T383838./meshchat-config -> T383838/config(永続化)

権限エラーが発生した場合:

T282828
sudo chown -R T79c0ff1000:1000 ./meshchat-config


リリースアーティファクトからのインストール

1) Linux AppImage (x64/arm64)

1. リリースから T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.AppImage をダウンロード。
2. 実行権限を付与して起動:

T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage

2) Debian/Ubuntu T383838.deb (x64/arm64)

1. T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.deb をダウンロード。
2. インストール:

T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb

3) RPM ベースのシステム

1. リリースに T383838ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.rpm がある場合はダウンロード。
2. インストール:

T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm

4) Python wheel (T383838.whl)

リリースの wheel にはビルド済みの Web アセットが含まれます。

T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless

T383838pipx もサポート:

T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl

ソースからの実行(Web サーバーモード)

開発時やローカルのカスタムビルド向け。

T282828
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1


上記インストールコマンドに関する補足:

• T383838pnpm install --frozen-lockfile は T383838pnpm-lock.yaml の更新を拒否し、ロックファイルが T383838package.json と一致しない場合は失敗します。これにより、想定外の上流バージョンが暗黙的にインストールされるのを防げます。
• T383838verify-store-integrity=true はプロジェクトの T383838.npmrc にも設定されています。上記の T383838pnpm config set の行はユーザー設定側も明示的に固めるためのものです。
• pnpm v10 以降、ライフサイクルスクリプト (T383838preinstall/T383838postinstall) はデフォルトでブロックされます。インストールスクリプトを実行できるのは T383838package.json の T383838pnpm.onlyBuiltDependencies に列挙されたパッケージ (現在は T383838electron、T383838electron-winstaller、T383838esbuild、T383838protobufjs) だけです。
• T383838poetry check --lock は T383838poetry.lock と T383838pyproject.toml が同期していない場合に即時失敗します。その後の T383838poetry install はロックファイルからのみ解決します。
• 厳密にロックファイルだけで Poetry をインストールしたい場合は、CI と揃えるために T383838pip install "poetry==2.3.4" で Poetry バージョンを固定してください。

意図的に依存を更新する場合は、T383838pnpm update / T383838poetry update を専用コミットで実行し、push 前にロックファイルの diff を必ず確認してください。

サンドボックスで実行(Linux)

ネイティブの T383838meshchatx(エイリアス: T383838meshchat)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ Firejail または Bubblewrap(T383838bwrap)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照:


同梱または同期された T383838meshchatx-docs から配信される場合、アプリ内の ドキュメント(MeshChatX ドキュメント)一覧にも同じページが表示されます。

Linux デスクトップ: 絵文字フォント

絵文字ピッカーはシステムフォント(Electron/Chromium)で標準 Unicode 絵文字を描画します。絵文字が空の四角(「豆腐」)になる場合はカラー絵文字パッケージをインストールし、アプリを再起動してください。

┌──────────────────────────────┬───────────────────────────────────────────────────────────────────┐
│ ディストリビューション(例) │ パッケージ │
├──────────────────────────────┼───────────────────────────────────────────────────────────────────┤
│ Arch Linux, Artix, Manjaro │ T383838noto-fonts-emoji(T383838sudo pacman -S noto-fonts-emoji) │
│ Debian, Ubuntu │ T383838fonts-noto-color-emoji(T383838sudo apt install fonts-noto-color-emoji) │
│ Fedora │ T383838google-noto-emoji-color-fonts
└──────────────────────────────┴───────────────────────────────────────────────────────────────────┘

インストール後も表示されない場合は T383838fc-cache -fv を実行してください。最小インストールでは記号の網羅用に T383838noto-fonts も任意で入れてください。

ソースからのデスクトップパッケージビルド

スクリプトは T383838package.json と T383838Taskfile.yml に定義されています。

Linux x64 AppImage + DEB

T282828
pnpm run dist:linux-x64

Linux arm64 AppImage + DEB

T282828
pnpm run dist:linux-arm64

RPM

T282828
pnpm run dist:rpm

Task 経由:

T282828
task dist:fe:rpm

アーキテクチャサポート

• Docker イメージ: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64(ビルドスクリプトあり)
• macOS: ローカルビルド向けにビルドスクリプトあり(T383838arm64, T383838universal
• Android: ネイティブ APK — ABI T383838arm64-v8a、T383838x86_64、および universal

Android

MeshChatX はネイティブ Android APK のビルドに対応しています(Termux のみに限りません)。

ソースから APK をビルド

リポジトリのルートで:

T282828
T8b949e# 1) android/app/build.gradle で使う Chaquopy 用ホイールをビルド
bash scripts/build-android-wheels-local.sh

T8b949e# 2) 既定の slim APK をビルド(universal: フレーバーとビルドタイプごとに 1 つの APK)
Tffa657cd android
./gradlew --no-daemon :app:assembleSlimDebug :app:assembleSlimRelease


product flavors T383838slim / T383838full(Python ツリーの大きさ)と ABI パッケージング T383838universal(既定)または T383838split(T383838android/app/build.gradle)で出力が決まります。

T383838-PmeshchatxAbiPackaging=universal(既定)では、選択した ABI がすべて入った単一 APK です。

デバッグ(T383838android/app/build/outputs/apk/slim/debug/):

• T383838app-slim-debug.apk

リリース(T383838android/app/build/outputs/apk/slim/release/):

• T383838app-slim-release-unsigned.apk

より大きい Python バンドルが必要なら T383838:app:assembleFullDebug または T383838:app:assembleFullRelease

備考:

• リリース出力は署名を設定しない限りデフォルトで未署名です。
• 1 種類だけ欲しい場合は例: T383838:app:assembleSlimDebug または T383838:app:assembleSlimRelease
• ABI は T383838-PmeshchatxAbis または T383838MESHCHATX_ABIS、パッケージングは T383838-PmeshchatxAbiPackaging または T383838MESHCHATX_ABI_PACKAGING で上書きできます。
• Chaquopy の T383838meshchatx/ ツリー: T383838slim は T383838src/slim/python/ に小さい同期、T383838full は T383838src/full/python/ に完全同期。詳細は android/README.md

追加ドキュメント:


設定

┌────────────────────────┬──────────────────────────────────────┬────────────┬─────────────────────┐
│ 引数 │ 環境変数 │ デフォルト │ 説明 │
├────────────────────────┼──────────────────────────────────────┼────────────┼─────────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Web サーバーのバイ… │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Web サーバーポート │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ HTTPS を無効化 │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (なし) │ PEM 証明書と鍵のパ… │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (なし) │ Reticulum(RNS)の… │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ ブラウザを自動で開… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ 基本認証を有効化 │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ データディレクトリ │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ 自動/同梱 │ フロントエンドファ… │
└────────────────────────┴──────────────────────────────────────┴────────────┴─────────────────────┘

ブランチ

┌──────────┬────────────────────────────────────────────────────────────┐
│ ブランチ │ 目的 │
├──────────┼────────────────────────────────────────────────────────────┤
│ T383838master │ 安定版リリース。本番向けのコードのみ。 │
│ T383838dev │ 活発な開発。不安定または不完全な変更を含む場合があります。 │
└──────────┴────────────────────────────────────────────────────────────┘

開発

T383838Taskfile.yml のよく使うタスク:

T282828
task install
task lint:all
task test:all
task build:all

T383838Makefile のショートカット:

┌──────────────┬─────────────────────────────────────────┐
│ コマンド │ 説明 │
├──────────────┼─────────────────────────────────────────┤
│ T383838make install │ pnpm と poetry の依存関係をインストール │
│ T383838make run │ poetry 経由で MeshChatX を実行 │
│ T383838make build │ フロントエンドをビルド │
│ T383838make lint │ eslint と ruff を実行 │
│ T383838make test │ フロントエンドとバックエンドのテスト │
│ T383838make clean │ ビルド成果物と node_modules を削除 │
└──────────────┴─────────────────────────────────────────┘

バージョン管理

このリポジトリの現在のバージョンは T3838384.5.0 です。

• JavaScript / Electron のバージョンソースは T383838package.json
• T383838meshchatx/src/version.py は次で T383838package.json と同期します:

T282828
pnpm run version:sync

リリースの一貫性のため、必要に応じて (T383838package.json、T383838pyproject.toml、T383838meshchatx/__init__.py) のバージョンを揃えてください。

セキュリティ

• アプリ実行時の組み込み整合性チェックとデフォルトの HTTPS/WSS
• T383838.gitea/workflows/ の CI スキャンワークフロー

言語の追加

ロケールの検出は自動で行われます。T383838meshchatx/src/frontend/locales/ に新しい JSON(例: T383838xx.json)を追加し、T383838en.json と同じキーに加え、言語選択に表示する名前を T383838_languageName で指定します。T383838en.json をコピーしてすべて手翻訳しても構いません。機械翻訳による生成は任意で、必須ではありません。

修正や人間による翻訳の提供を歓迎します。 既存ロケールの改善や完全な手翻訳ファイルは、ソースリポジトリまたは GitHub ミラー にプルリクエストまたは issue で送ってください。

任意: Argos Translate による下書き -- T383838en.json から機械翻訳のたたき台が欲しい場合は T383838scripts/argos_translate.py を使えます。フォーマット処理や補間変数(T383838{count} など)の保護に役立ちます。

T282828
T8b949e# argostranslate をまだインストールしていない場合はインストールします
pip install argostranslate

T8b949e# 翻訳スクリプトを実行します
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"言語名"


機械下書きのあとは、LLM または人間が文法・文脈・トーン(フォーマル/カジュアルなど)を確認するとよいでしょう。

T383838pnpm test -- tests/frontend/i18n.test.js --run を実行して、T383838en.json とのキーの一致を確認します。

その他のコードの変更は必要ありません。アプリ、言語セレクター、およびテストは、ビルド時に T383838meshchatx/src/frontend/locales/ ディレクトリからロケールを検出します。

クレジット

Liam Cottle - オリジナル Reticulum MeshChat
RFnexus - Micron パーサー(JavaScript)
markqvist - Reticulum, LXMF, LXST

ライセンス

プロジェクト独自の部分は 0BSD です。
MeshChat 由来の元の上流部分は MIT のままです。
全文と通知は ../LICENSE を参照してください。


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────